Subject: [ontolog-forum] Three controlled NLs for OWL 1.1
From: John F Sowa <[email-masked]>
To: ontolog-forum <[email-masked]>, "[email-masked]" <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked], [email-masked], [email-masked]
Date: Sun, 3 Jan 2016 09:42:39 -0500
List-Id: <ontolog-forum.googlegroups.com>

The following paper compares OWL 1.1 to three versions of controlled
English:  ACE, Rabbit, and SOS:
https://www.researchgate.net/publication/280113558_A_Comparison_of_three_Controlled_Natural_Languages_for_OWL_11

Some examples:

> OWL AsymmetricObjectProperty(ObjectProperty(is-larger-than))
> ACE If something X is larger than something Y then Y is not larger than X.
> RAB The relationship "is larger than" is asymmetric.
> SOS If X is larger than Y then Y is not larger than X.

As this example shows, ACE and SOS avoid metalevel terminology as
far as possible.  But Rabbit uses some metalevel terms, such as
'relationship' and 'asymmetric'.  But all three are easier to read
and write than OWL notation.

> OWL SubClassOf(OWLClass(factory), ObjectSomeValuesFrom(ObjectProperty(
> has-part), ObjectIntersectionOf([ObjectSomeValuesFrom(
> ObjectProperty(has-purpose), OWLClass(manufacturing)),
> OWLClass(building)])))
> ACE For every factory its part is a building whose purpose is a
> manufacturing.
> RAB Every Factory has a part Building that has Purpose Manufacturing.
> SOS Every factory has a building as a part that has a manufacturing as
> a purpose.

In ACE and SOS, the article 'a' is required before 'manufacturing'.
That confuses the distinction between *count nouns* (which require 'a')
and *mass nouns* (which requires an *absence* of 'a').

The authors make that point with another example:

> OWL SubClassOf(ObjectSomeValuesFrom(ObjectProperty(has-part),
> OWLClass(water)), ObjectSomeValuesFrom(ObjectProperty(contain),
> OWLClass(water)))
> ACE Everything whose part is a water contains a water.
> RAB Everything that has a Part that contains some Water will also contain
> some Water.
> SOS Everything that has some water as a part contains some water.

This leads to a serious question about teaching CNLs and detecting
and correcting errors by authors who use CNLs.  Many years ago, the
pioneer in computer science Edsger Dijkstra said that one of the
most important requirements for good programmers is the ability to
express themselves clearly and precisely in their native language.

I strongly agree with that point.  I believe that a CNL should not
teach students bad habits.  The writing tools should accept poorly
expressed statements and help the authors correct them.  That implies
that every correct statement in a CNL should be correct in the NL.

And while quoting Dijkstra, I'd like to mention one of my favorites:
> Aim for brevity while avoiding jargon.

That should be the goal of a good CNL:  eliminate as much of the
jargon as possible while maintaining precision, clarity, readability,
and grammatical correctness in the corresponding NL.

I agree with the concluding section of that article:
> Although there are clearly differences between the three CNLs, there
> is considerable overlap between them and therefore much common ground
> to build on.

And by the way, Happy New Year!

John

-- 
All contributions to this forum by its members are made under an open content license, open publication license, open source or free software license. Unless otherwise specified, all Ontolog Forum content shall be subject to the Creative Commons CC-BY-SA 4.0 License or its successors.
--- 
You received this message because you are subscribed to the Google Groups "ontolog-forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email-masked].
To post to this group, send email to [email-masked].
Visit this group at https://groups.google.com/group/ontolog-forum.
To view this discussion on the web visit https://groups.google.com/d/msgid/ontolog-forum/5689335F.5060002%40bestweb.net.
For more options, visit https://groups.google.com/d/optout.